import 'dart:io';
main () {
print('程序开始,执行main入口函数');

// 回调地狱（不推荐：嵌套较深，捕获错误麻烦）
  // getFirstData().then((value) {
  //   print('第一个函数执行完成，结果是：$value');
  //   getSecondData().then((value) {
  //     print('第二个函数执行完成，结果是：$value');
  //     getThirdData().then((value) {
  //       print('第三个函数执行完成，结果是：$value');
  //     });
  //   });
  // });

// 链式调用
getFirstData().then((value) {
  print('第一个函数执行完成,返回值为:$value');
  return getSecondData(value);
}).then((value) {
  print('第二个函数执行完成,返回值为:$value');
  return getThirdData(value);
}).then((value) {
  print('第三个函数执行完成,返回值为:$value');
}).catchError((error) {
  print('错误信息:$error');
});
print('不能堵塞的代码');
}

// 第一个获取数据的代码
Future<int> getFirstData () {
  return new Future(() {
    sleep(Duration(seconds: 2));
    print('第一个函数执行完成');
    return 11;
  });
}

// 第二个获取数据的代码
Future<String> getSecondData (int value) {
  return new Future(() {
    sleep(Duration(seconds: 2));
    print('第二个函数执行完成');
    return '22';
  });
}

// 第三个获取数据的代码
Future<bool> getThirdData (String value) {
  return new Future(() {
    sleep(Duration(seconds: 2));
    print('第三个函数执行完成');
    return true;
  });
}

